import axios from "axios";
import {Modal} from 'ant-design-vue'


console.log(import.meta.env,'环境变量');

let axiosEl = axios.create({
    baseURL:'http://xawn.x3322.net:8012',   // 接口的域名
    timeout:5000    // 过5秒失效
})
interface IAxiosProps {
    rows:any,
    data:any,
    total:number,
    code:number
}
declare module 'axios' {
    interface AxiosInstance {
        (config:AxiosRequestConfig):Promise<IAxiosProps>
    }
}

// 请求拦截 和响应拦截， 必须有return 
// 请求拦截 ，前端给后端数据的时候，进行拦截
axiosEl.interceptors.request.use((config)=>{
    const token = localStorage.getItem('token');
    if(token){
        config.headers.Authentication =  token;
        // config.headers.Authentication =  'b25e39b47e774b4a05b3cb1555fc377f209457c3fd339d373d3fca7b1ea8be56fdc6ed05b7ffb0700e7300d242fb83b56d9e53ac68ca9c87bc5f984075c05d28c2f2c5bb1aee06512deb3d11b9be0e80ea9cbdd85364d1f7ab67d647eb54c54e6e1c1ca7175f619046fedde48074d505464e151226d71954575b1f700d2aaa967f536c3b2ec2d610';
    }
    if(config.method?.toLocaleLowerCase()=='get' && !config.params) {
        config.params = config.data;

    }
    return config;
})
//response 响应  。 后端给前端数据的时候， 你拿到数据后 
axiosEl.interceptors.response.use((res)=>{
    // res 后端给你的数据
    return res.data
},(err)=>{
    if(err.response && err.response.status){
        let errTip = ''
        switch(err.response.status){
            case 400:
                // 客户端错误 :可能你数据有错
                console.log('服务端错误');
                errTip = '服务端错误'
                break;
            case 404:
                // 你接口调错了
                errTip = '你接口调错了';
                break;
            case 401:
            case 403:
                errTip = '你没有权限，禁止访问,需要重新登录'
                // 你没有权限，禁止访问， 需要重新登录
                window.location.href = '/login';
                break;
            case 500:
                // 服务端错误， 后端的问题
                errTip = '服务端错误'
                console.log('服务端错误');
                break;
            default :
            errTip = '未知错误'
        }
        Modal.warning({
            content:errTip
        })
    }
})

// 错误类型
// https://blog.csdn.net/qq_57550554/article/details/131224769

export default axiosEl;

